/* // 此时创建的是同一对象，不在类里面指定属性值，至指定属性值类型
class Dog {
    name = "旺财";
    age = 4;
    back() {
        alert("汪汪")
    }
}
const dog1 = new Dog;
const dog2 = new Dog;
const dog3 = new Dog;
const dog4 = new Dog;
console.log(dog1);
console.log(dog2);
console.log(dog3);
console.log(dog4); */


class Dog {
    // 类中不能直接只指定属性类型不赋值(但可以通过constructor构造器函数指向对应的属性)
    name: String;
    age: Number;
    // constructor  被称为构造函数
    constructor(name: string, age: number) {
        // console.log("构造函数创建了")
        /*
            在实例方法中， this就表示当前当前的实例
            在构造函数中当前对象就是当前新建的那个对象
            可以超过this向新建的对象中添加属性
         */
        // console.log(this)
        // this表示当前对象
        this.name = name;
        this.age = age;
    };
    back() {
        // this指定调用该方法的实例化对象
        console.log(this.name + "-------------" + this.age);
    };
    sayHello() {
        console.log("汪汪汪！")
    }
}

// 构造函数中需要n个传递参数，实例化对象时就必须传入n个参数
const dog1 = new Dog("小黑", 4);
const dog2 = new Dog("小白", 3);
console.log(dog1);
console.log(dog2);